package com.mike.bdb.ui.provider.table;

import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * 分页信息
 * @author <a href="zhaoming23@gmail.com">Mike</a>
 * @version 1.0
 * 2011-5-6 下午01:58:56
 */
public class PageInfo {
	
	/** 总记录数 */
	private int count;
	
	/** 当前页编号 从0开始*/
	private int index;
	
	/** 每页记录数 */
	private int size;

	/**
	 * 分页信息
	 * @param count	总记录数
	 * @param index	当前页编号 从零开始
	 * @param size	每页记录数
	 */
	public PageInfo(int count, int index, int size) {
		this.count = count;
		this.index = index;
		this.size = size;
	}

	/** var for bdb entitys from */
	public String from() {
		return String.valueOf(index * size);
	}
	
	public int fromInt() {
		return index * size;
	}
	
	/** var for bdb entitys to */
	public String to() {
		return String.valueOf(fromInt() + size);
	}
	
	public int toInt() {
		return fromInt() + size;
	}
	
	/** 总记录数 */
	public int getCount() {
		return count;
	}

	/** 总记录数 */
	public void setCount(int count) {
		this.count = count;
	}

	/** 当前页 从零开始 */
	public int getIndex() {
		return index;
	}

	/** 当前页 从零开始 */
	public void setIndex(int index) {
		this.index = index;
	}

	/** 每页记录数 */
	public int getSize() {
		return size;
	}

	/** 每页记录数 */
	public void setSize(int size) {
		this.size = size;
	}
	
	/** 最大页数 */
	public int getMaxPage() {
		int maxPage = count / size;
		boolean mod = count % size == 0;
		//至少有一页 
		return mod ? maxPage == 0 ? 1 : maxPage : maxPage + 1;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this) + "[" + from() + "," + to() + "]";
	}
	
	
}
